#import re
##r=re.match('test','testabcdfgsdtest')
##print(r)
###<re.Match object; span=(0, 4), match='test'>
##
##r=re.match('test','Testabcdfgsdtest')
##print(r)
###None
##
##
###如果我们想将匹配的内容拿出来的话，我们可以使用下面的方法
##r=re.match('test','testabcdfgsdtest')
##print(r)
##print(r.group())
###test
##print(r.span())
###(0, 4)

'''
import re
r=re.search('test','tdestabcdfgsdtest')
print(r)
print(r.group())
print(r.span())
#<re.Match object; span=(13, 17), match='test'>
r=re.search('test','Testatfsegsdtest')
print(r)
print(r.group())
print(r.span())

#<re.Match object; span=(12, 16), match='test'>
r=re.findall('test','tdestabtestcdfgsdtest')
print(r)
#['test', 'test']
'''
'''
import re
#.匹配任意字符，除了\n
print(re.findall('.','test\tand\n'))
#['t', 'e', 's', 't', '\t', 'a', 'n', 'd']
#可以将整个字符串进行一个拆分，将每个元素进行一个获取放到列表中存放
import re
print(re.findall('\d','abd6c123'))
#['6', '1', '2', '3']

import re
print(re.findall('\D','abd6c123'))
#['6', '1', '2', '3']
#['a', 'b', 'd', 'c']



import re
print(re.findall('\s','ted \t anfdsa sd '))
#[' ', '\t', ' ', ' ', ' ']

import re
print(re.findall('\S','ted \t anfdsa sd '))
#['t', 'e', 'd', 'a', 'n', 'f', 'd', 's', 'a', 's', 'd']


import re
print(re.findall('\w','hi,小明！'))
#['h', 'i', '小', '明']

import re
print(re.findall('\W','hi,小明！'))
#['h', 'i', '小', '明']
#[',', '！']


import re
print(re.findall('[a-z]','hi,小明!123'))
#['h', 'i']


import re
print(re.findall('[a-z,A-Z]','hi,小明DFS!123'))
#['h', 'i', ',', 'D', 'F', 'S']


import re
print(re.findall('[a-zA-Z]','hi,小明DFS!123'))
#['h', 'i', 'D', 'F', 'S']


import re
print(re.findall('[0-9]','hi,小明DFS!123'))
#['1', '2', '3']



import re
print(re.findall('[0-35-9]','hi,小明DFS!124653'))
#['1', '2', '6', '5', '3']
'''

"""
import re
print(re.findall('\S*','hi,my name is xiaoming'))
#['hi,my', '', 'name', '', 'is', '', 'xiaoming', '']

import re
print(re.findall('\S+','hi,my name is xiaoming'))
#['hi,my', 'name', 'is', 'xiaoming']
#可以发现用*号多了很多空字符

import re
print(re.findall('\d{3}','1233456'))
#['123', '345']


import re
print(re.findall('\S{4,}','hi,my name is xiaoming'))
#['hi,my', 'name', 'xiaoming']

import re
print(re.findall('\S{2,4}','hi,my name is xiaoming'))
#['hi,m', 'name', 'is', 'xiao', 'ming']


import re
print(re.findall('\S{2,4}?','hi,my name is xiaoming'))
#['hi', ',m', 'na', 'me', 'is', 'xi', 'ao', 'mi', 'ng']

r=re.match('aaa.','aaa1212bbb')
print(r.group())
#aaa1
'''
正则表达式'aaa.'将会匹配字符串'aaa1212bbb'中的'aaa'
后面紧跟着的第一个字符，也就是数字'1'。因此，r.group()将会输出'aaa1'。
'''

#贪婪
r=re.match('aaa.+','aaa1212bbb')
print(r.group())
#aaa1212bbb


#非贪婪
r=re.match('aaa.+?','aaa1212bbb')
print(r.group())
#aaa1
#至少匹配1次并且是非贪婪的，那么尽可能少，
"""


import re
#以t开头
print(re.findall('^t\w+','testabctest'))
#['testabctest']
'''
^t----设置以t开头
\w匹配字母数字下划线
+至少匹配一次
'''

import re
#以t开头
print(re.findall('^t\w+','Testabctest'))
#[]


import re
#以t结尾
print(re.findall('^t\w+t$','testabctest'))
#['testabctest']

import re
#以T结尾
print(re.findall('^t\w+T$','testabctest'))
#[]

import re
#以T结尾
print(re.findall('^t\w+?t$','testabctest'))
#['testabctest']

#我们设置好了第一个和最后一个
#结尾字符指的就是字符串的最后面一个字符
#我们必须将中间的匹配完我们才能拿到

#我们加上?的话就没啥用，就不存在贪婪和非贪婪的说法了


import re
#匹配[]内列举的内容
print(re.findall('^[Tt]\w+','Testabctest'))
#['Testabctest']

import re
#不匹配[]内列举的内容
print(re.findall('[^Tt]','Testabctest'))
#['e', 's', 'a', 'b', 'c', 'e', 's']



r=re.match( '<.+>(.*)<.+>','<h1>python<\h1>')
print(r.group())
#<h1>python<\h1>
#获取到标签中间的句子
print(r.groups())
#('python',)
#以元组的形式进行存储
#尖括号对尖括号，那么这个圆括号就和python进行匹配上了

print(re.findall('<.+>(.*)<.+>','<h1>python<\h1>'))
#['python']


c=re.compile('<.+>(.*)<.+>')
print(c)
 #re.compile('<.+>(.*)<.+>')
#通过对象进行方法的调用操作,那么就是省略掉了前面的正则表达式，写后面的字符串就行了
print(c.match('<h1>python<\h1>').groups())
#('python',)
print(c.search('<h1>python<\h1>').groups())
#('python',)
print(c.findall('<h1>python<\h1>'))
#['python']

#我们后面都没写正则表达式了，因为我们在前面就将正则表达式转换为对象了

#通过对象进行方法的调用，会将对象信息给到方法的

s='hello 111word 222'
#现在我们想将连续的三个数字替换为666
s=s.replace('111','666')
print(s)
#hello 666word 222
s=s.replace('222','666')
print(s)
#hello 666word 666

#如果我们还存在其他的数字的话我们还需要进行替换的操作
#这样就会很麻烦的

s1='hello 111word 222'
#我们需要将连续的三个字符进行替换了
s2=re.sub('\d{3}','666',s1)
print(s2)
#hello 666word 666
#第一个参数就是替换的字符串的特点
#第二个参数是替换的新数据
#第三个是需要进行替换的字符串

s='huahua1xiaoming2lisi3lala'
#拆分出名字
l=re.split('\d',s)
print(l)
#['huahua', 'xiaoming', 'lisi', 'lala']

l=re.split('[123]',s)
print(l)
#['huahua', 'xiaoming', 'lisi', 'lala']

l=re.split('[1-3]',s)
print(l)
#['huahua', 'xiaoming', 'lisi', 'lala']


print(re.match('ve\b','ve2test'))
#None
print(re.match(r've\b','ve!2test'))
#<re.Match object; span=(0, 2), match='ve'>

print(re.match('ve\B','ve2test'))
#<re.Match object; span=(0, 2), match='ve'>
print(re.match('ve\B','ve!2test'))

#None
















































































